﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BusinessObjects.BussinessDictionary;

namespace DataObjects.StandartInterfaces.Dictionary
{

    /// <summary>
    /// Defines methods to access FixedAsset
    /// </summary>
    /// <remarks>
    /// This is a database-independent interface. Implementations are database specific
    /// </remarks>
    public interface IFixedAssetDao
    {
        /// <summary>
        /// Gets the accounts for combo tree.
        /// </summary>
        /// <param name="accountId">The account identifier.</param>
        /// <returns>List{FixedAssetEntity}.</returns>
        List<FixedAsset> GetFixedAssetsForComboTree(int accountId);
        /// <summary>
        /// Gets the inventory item categories by parent.
        /// </summary>
        /// <param name="parentId">The parent identifier.</param>
        /// <returns></returns>
        List<FixedAsset> GetFixedAssetsByParent(int parentId);

        /// <summary>
        /// Gets the paged.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>
        /// <param name="currentPage">The current page.</param>
        /// <returns></returns>
        List<FixedAsset> GetPaged(int unitId, int currentPage);

        /// <summary>
        /// Gets the size of the page.
        /// </summary>
        /// <param name="unitId">The unit identifier.</param>

        /// <returns></returns>
        int GetPageSize(int unitId);

        /// <summary>
        /// Gets the FixedAssets by unit.
        /// </summary>
        
        /// <returns></returns>
        FixedAsset GetFixedAsset(int fixedAssetId);

        /// <summary>
        /// Inserts the FixedAsset.
        /// </summary>
       
        string InsertFixedAsset(FixedAsset fixedAsset);

        /// <summary>
        /// Updates the FixedAsset.
        /// </summary>
        /// <param name="fixedAsset"> </param>
        string UpdateFixedAsset(FixedAsset fixedAsset);

        /// <summary>
        /// Deletes the FixedAsset.
        /// </summary>
        string DeleteFixedAsset(FixedAsset fixedAsset);
    }
}
